package dletc.demo;

import java.util.Date;
import java.util.Scanner;

public class demo01 {

	 /**
     * 1.异常：程序执行过程中的不正常情况
     * 2.异常的作用：增强程序的健壮性
     * 3.java中异常是以类和对象的形式存在的。
     * 4.异常的继承结构：（UML图：统一建模语言，画图的，只要是面向对象的编程语言，都有UML）
     *      异常的老祖宗是Throwable类  Throwable也是继承Object类  所有的错误和异常都是可抛出的
     *      下面有Error类，Error一旦发生不可处理，退出JVM，另一个是Exception类 异常类可处理的
     *      Exception划分为2种 一种是Exception直接子类 一种是RunTimeException
     *      Exception直接子类是“编译时异常” 编译时异常是在编译阶段必须对异常继续处理，不处理就报错。
     *      RunTimeException及其子类是“运行时异常” 运行时异常在编译阶段可以处理，也可以不处理。
     *      ***不论是编译时异常、还是运行时异常都是在运行时发生的。
     *      因为异常是以对象和类的形式存在，只有在运行阶段才能new对象***
     * 5.编译时异常和运行时异常的区别：
     *      编译时异常发生概率比较高，运行时异常发生概率比较低。
     *      对于一些发生较高的异常，需要在运行之前对其进行预处理。
     *      如果不划分编译时异常、运行时异常会怎么样：会很累，到处处理异常。
     *      编译时异常也被称为：受检异常、受控异常  CheckedException； 运动时异常也被称为：未受检 未受控异常 UnCheckedException
     * 6.java中对异常处理有两种方式：
     *      第一种方式：在方法声明的位置上，使用throws关键字
     *      第二种方法：使用try..catch语句进行异常的捕获
     *      异常发生后，如果一直上抛，最终抛给了main方法，main方法继续上抛，抛给了JVM，
     *      JVM知道了这个异常后，只有一个结果，终止java程序运行。
     * 7.手动抛异常：
     * 		在方法体内使用关键字，throw new 异常对象。 
     *		手动抛出异常，一般结合上抛异常使用，因为自己抛出的，是希望别人看到异常，自己不捕捉
     * 8.怎么选择 上抛 还是 捕捉：
     * 		当想让调用者知道异常信息时，进行上抛，其他情况进行捕捉。
     * 9.以后查看异常的追踪信息，应该怎么看，可以快速的调试程序呢？
     * 		异常追踪信息，从上往下一行一行的看，sun写的代码就不用看了，主要的问题出现在自己的代码中。
     * 10异常中的关键字：
     * 		try catch finally 异常捕捉
     * 		throws	上抛异常
     * 		throw	手动抛异常 再上抛
     *
     */

}
